from joblib import load
import numpy np 

class ClassIfication(object):
    
    def __init__(self):
        self.knn=load('knn_classifien.joblib')
        self.scaler=load('label_encoder.joblib')
        self.le=load('label_encoder.joblib')
        
        
    def get_predicter_category(self,new_data):
        
        feature_order=['eps', 'total_revenue_ps', 'undist_profit_ps', 'gross_margin', 'fcff', 'fcfe', 'tangible_asset',
                    'bps', 'grossprofit_margin', 'npta']
     
        new_values=np.array([[new_data[col]] for col in feature_order])
        
        new_scaled =self.scaler.transform(new_scaled)
        
        predicted_label =self.knn.predict(new_scaled)
        predicted_category=self.le.inverse_transform(predicted_label)
        return predicted_category[0]

if __name__ =='__main__':
    ci =ClassIfication()
    NEW_DATA= {
        'eps':'-0.8309',
        'total_revenue_ps':'11.9673',
        'undist_profit_ps':'7.0209', 
        'gross_margin':'115867000000',
        'fcff':'',
        'fcfe':'', 
        'tangible_asset':'178',
        'bps':'20.2568',
        'grossprofit_margin':'8.1152', 
        'npta':'-0.5821'
    }
    predicted_category=ci.get_predicter_category(new_data)
    print(predicted_category)
